<?php
 /**
 * Fonctions de gestion de fichiers
 * @package Garennes
 * @author Jean-Francois Campan <jean-francois.campan@ac-poitiers.fr>
 * @version 0.1
 */
 
 $niveau_max = 0 ;
 $parent_max = 0 ;

 /**
 * Fonction qui parcourt un repertoire et renvoi tous les fichiers dans un tableau
 * @param string $repertoire Racine du debut de parcout
 * @param string $type_recherche tout ou voir FileType
 * @param integer $niveau (0=chemin complet ; 1=nom du fichier (ou repertoire) seul)
 * @param integer $parent (0=Racine ; >0 sous repertoire)
 * @param integer $numero Pointeur vers le repertoire racine
 * @param string $racine Nom du repertoire contenant le repertoire de recherche
 * @param integer $num_arbo Numero de l'arborescence en cours
 * @return array Table donnant tous les chemins et nom de fichiers avec droits,...
 */
 Function parcourt ($repertoire, $type_recherche, $niveau, $parent, $numero, $racine, $num_arbo)
  {
   Global $table ;
   Global $niveau_max, $parent_max ;
   $rf1 = "";

   If ($dir = @OpenDir ($repertoire))
    {
     While ($fichier = @ReadDir ($dir))
      {
       If ($fichier != "." And $fichier != "..")
        {
	 If (FileType ($repertoire."/".$fichier) == $type_recherche Or $type_recherche == "tout")
          {
           $table [0][0] = $table [0][0] + 1 ;
	   If ($niveau > 0) { $table [$table [0][0]][0] = $fichier ; }
	   Else { $table [$table [0][0]][0] = $repertoire."/".$fichier ; }
	   $table [$table [0][0]][1] = $niveau ;
	   $table [$table [0][0]][2] = $parent ;
	   $table [$table [0][0]][3] = FileType ($repertoire."/".$fichier) ;
	   $table [$table [0][0]][4] = SubStr (DecOct (FilePerms ($repertoire."/".$fichier)), StrLen (DecOct (FilePerms ($repertoire."/".$fichier)))-3, 3) ;
	   $table [$table [0][0]][5] = FileOwner ($repertoire."/".$fichier) ;
	   $table [$table [0][0]][6] = FileGroup ($repertoire."/".$fichier) ;
	   $table [$table [0][0]][7] = $fichier ;
	   $table [$table [0][0]][8] = $numero ;
	   $table [$table [0][0]][9] = SubStr ($repertoire."/".$fichier, StrLen ($racine), StrLen ($repertoire."/".$fichier)) ;
	   $table [$table [0][0]][10] = $num_arbo ;
           If ($niveau_max < $niveau) { $niveau_max = $niveau ; }
           If ($parent_max < $parent) { $parent_max = $parent ; }
	  }
	 If (FileType ($repertoire."/".$fichier) == "dir")
          {
	   parcourt ($repertoire."/".$fichier, $type_recherche, $niveau+1, $table [0][0], $numero, $racine, $num_arbo) ;
          }
        }
      }
     @CloseDir ($dir) ;
    }
   Else { $rf1 .= "Fichier non existant ou probl&egrave;me de droits." ; }
   $table [0][1] = $niveau_max ;
   $table [0][2] = $parent_max ;
   Return $rf1 ;
  }

 /**
 * Affichage de l'arborescence
 * @param array $table table de recherche provenant de la fonction parcourt()
 * @param integer $niv_arbo Numero du niveau de l'arborescence a afficher
 * @param integer $num_arbo Numero de l'arborescence
 * @return string Chaine contenant un tableau HTML (sans declaration) contenant l'arborescence formatte
 */
 Function affichage_arbo ($table, $niv_arbo, $num_arbo)
  {
   Global $theme ;
   Global $nbr_repertoire1 ;
   Global $origine ;
   Global $repert_source;
   Global $repert_destination;
   Global $noms_documents;
   Global $affichage_droits ;
   Global $der_repert;

   // Initialisation de la table de comptage
   For ($i = 1 ; $i <= $table [0][1] ; $i++)
    {
     For ($j = 1 ; $j <= $table [0][2] ; $j++)
      {
       $nbr_rep [$i][$j] = 0 ;
       $comptage [$i][$j] = 0 ;
      }
    }

   // Comptage du nombre de repertoire dans un niveau
   For ($i = 1 ; $i <= $table [0][0] ; $i++)
    {
     $nbr_rep [$table [$i][1]][$table [$i][2]]++ ;
    }

   //$rf2 = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" ;
   // Parcours tous les repertoires
   For ($i = 1 ; $i <= $table [0][0] ; $i++)
    {
     // Lecture d'une table contenant les repertoires a afficher pour un prof donn?
     $wrepert = $table [$i][0] ;
     $chemin = $table [$i][9] ;

     // on teste si le document existe deja
     // $result_file_exists = 1 si le fichier existe deja pour ce prof

     ////$chemin_document = $chemin."/".$nom_document;

     ////$fichier_existe = "";
     ////$result_file_exists = file_exists($chemin_document);
     ////if ($result_file_exists)
     ////{
     ////$fichier_existe = "OUI";
     ////}

     $rf2 .= "<tr>" ;
     If ($table [$i][3] == "dir")
      {
       $comptage [$table [$i][1]][$table [$i][2]]++ ;

       If ($fichier_existe) { $rf2 .= "<td height=\"22\" valign=\"middle\" bgcolor=\"#ff0000\">" ; }
       Else { $rf2 .= "<td height=\"22\" valign=\"middle\">" ; }

       // Traite le niveau du repertoire
       If ($niv_arbo == 1)
        {
	 If ($num_arbo < $nbr_repertoire1-1) { $rf2 .= "<img src=\"../images/".$theme."/trait_v.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
         Else { $rf2 .= "<img src=\"../images/".$theme."/vierge.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
	 // Regarde le trait gauche
         If ($comptage [$table [1][1]][$table [1][2]] < $nbr_rep [$table [1][1]][$table [1][2]])
          {
	   If ($table [$i][2] == 0) { $rf2 .= "<img src=\"../images/".$theme."/liaison_v.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
	   Else { $rf2 .= "<img src=\"../images/".$theme."/trait_v.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
          }
         Else
	  {
	   If (($comptage [$table [1][1]][$table [1][2]] == $nbr_rep [$table [1][1]][$table [1][2]]) And ($table [$i][2] == 0))
	    { $rf2 .= "<img src=\"../images/".$theme."/terminal.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
           Else
	    { $rf2 .= "<img src=\"../images/".$theme."/vierge.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
          }
	}
       Else
        {
         // Regarde le trait gauche
         If ($table [$i][10] < $nbr_repertoire1)
          {
           If (($comptage [$table [$i][1]][$table [$i][2]] <= $nbr_rep [$table [$i][1]][$table [$i][2]]) And ($table [$i][2] == 0))
            { $rf2 .= "<img src=\"../images/".$theme."/liaison_v.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
           Else
	    { $rf2 .= "<img src=\"../images/".$theme."/trait_v.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
          }
         Else { $rf2 .= "<img src=\"../images/".$theme."/terminal.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
        }
       // Parcours les niveaux
       $parent = $table [$i][2] ;
       For ($niveau = $table  [$i][1] ; $niveau > 1 ; $niveau--)
        {
         If ($comptage [$niveau][$parent] == $nbr_rep [$niveau][$parent])
          {
	   // Dernier repertoire d'un niveau
	   If ($niveau == $table [$i][1]) { $tempo [$niveau] = "<img src=\"../images/".$theme."/terminal.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
	   Else { $tempo [$niveau] = "<img src=\"../images/".$theme."/vierge.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
          }
         Else
          {
	   If (($comptage [$niveau][$parent] <= $nbr_rep [$niveau][$parent]) And ($niveau == $table [$i][1]))
	    {
	     $tempo [$niveau] = "<img src=\"../images/".$theme."/liaison_v.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ;
            }
	   Else
	    { $tempo [$niveau] = "<img src=\"../images/".$theme."/trait_v.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ; }
          }
         $parent = $table [$parent][2] ;
        }
       For ($j = 2 ; $j <= $table [$i][1] ; $j++)
        {
         $rf2 .= $tempo [$j] ;
        }

       $origine = "3";
       $rf2 .= "<a href=\"./creation_repertoire.php?repert_source=$repert_source&noms_documents=$noms_documents&repert=$chemin&origine=$origine&der_repert=$wrepert\" target=\"principal_droite_4\">" ;
       //$rf2 .= "<img src=\"../images/dir.png\" border=\"0\"></a>";
       //$origine = "2";
       //$rf2 .= "<A href=\"./creation_repertoire.php?repert=$chemin&origine=$origine&der_repert=$wrepert\" TARGET=\"principal_droite_1\">";
       $rf2 .= "<img src=\"../images/".$theme."/repertoire.png\" border=\"0\" hspace=\"0\" vspace=\"0\" align=\"middle\">" ;
       $rf2 .= "</a>" ;

      }

     //$rf2 .= "<a href=\"./sel_fichiers_prof.php?&repert=$chemin&der_repert=$wrepert\" target=\"principal_droite_1\">&nbsp;".$wrepert."&nbsp;</a>" ;
     $rf2 .= "<a href=\"./transfert_prof.php?&repert_source=$repert_source&repert_destination=$chemin&noms_documents=$noms_documents\" target=\"principal\">&nbsp;".$wrepert."</a>" ;

     $rf2 .= "</td>" ;
     $rf2 .= "</tr>" ;
    }
   //$rf2 .= "</table>" ;
   Return $rf2 ;
  }
?>